void setshort_mustuniq(void *, int n);
void setshort_whitespace_ok(void *, int n);
+/*
+ * Vmem flags values.
+ */
+#define VMFL_NOZERO (1 << 0)
typedef struct vmem {
void *mem; /* visible memory object */
size_t size; /* allocated size of object */
} vmem_t;
-vmem_t vmem_alloc(size_t);
+vmem_t vmem_alloc(size_t, int flags);
void vmem_free(vmem_t*);
void vmem_realloc(vmem_t*, size_t);
file_time = 0;
- current_tag = vmem_alloc(1);
+ current_tag = vmem_alloc(1, 0);
+ *((char *)current_tag.mem) = '\0';
psr = XML_ParserCreate(NULL);
if (!psr) {
fatal(MYNAME ": Cannot create XML Parser\n");
}
- cdatastr = vmem_alloc(1);
+ cdatastr = vmem_alloc(1, 0);
+ *((char *)cdatastr.mem) = '\0';
+
XML_SetElementHandler(psr, gpx_start, gpx_end);
XML_SetCharacterDataHandler(psr, gpx_cdata);
}
#include <stdlib.h>
vmem_t
-vmem_alloc(size_t size)
+vmem_alloc(size_t size, int flags)
{
vmem_t vm;
- vm.mem = xmalloc(size);
+ /*
+ * By default, zero the allocated thingy.
+ */
+ if (flags & VMFL_NOZERO)
+ vm.mem = xmalloc(size);
+ else
+ vm.mem = xcalloc(size, 1);
vm.size = size;
return vm;
}